﻿using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using AudiPyme.BLL;
using System.IO;
using System.Data;
using AudiPyme.DAL;
using System.Web.UI.DataVisualization;
using System.Web.UI.DataVisualization.Charting;
using System.Drawing;
using System.Web.UI.HtmlControls;

namespace AudiPyme.UI
{
    public partial class AdMatrices : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                PanelChartActRel.Visible = true;
                PintaChartActRel();
            }
        }

        //Método que muestra la información elegida en un chart
        private void PintaChartActRel()
        {
            try
            {
                //Dependiendo de la opcion elegida en el DropDownList, el Chart mostrará las relaciones 
                //agrupadas según el criterio seleccionado
                List<String> AtributosChart = new List<String>();
                AtributosChart.Add("Relaciones Amenaza - Control");
                AtributosChart.Add("Relaciones Amenaza - Vulnerabilidad");
                AtributosChart.Add("Relaciones Tipo Activo - Amenaza - Criterio Riesgo");
                AtributosChart.Add("Relaciones Tipo Activo - Vulnerabilidad");

                List<int> ValoresAtributosEmp = new List<int>();
                int NAmenContr = Matriz_Amenazas_ControlesFactory.NumRelacAmenContr();
                int NAmenVuln = Matriz_AmenazasVulnerabilidadesFactory.NumRelacAmenVuln();
                int NTipAmenCrit = Matriz_TipoActivosAmenazasCriteriosRiesgoFactory.NumRelacTipAmenCrit();
                int NumTipVuln = Matriz_TiposActivosVulnerabilidadesFactory.NumRelacTipActVuln();
                int Total = NAmenContr + NAmenVuln + NTipAmenCrit + NumTipVuln;
                if (Total != 0)
                {
                    PanelChartActRel.Visible = true;
                    ValoresAtributosEmp.Add(NAmenContr);
                    ValoresAtributosEmp.Add(NAmenVuln);
                    ValoresAtributosEmp.Add(NTipAmenCrit);
                    ValoresAtributosEmp.Add(NumTipVuln);
                    for (int i = 0; i < AtributosChart.Count(); i++)
                    {
                        ChartActRel.Series["Series1"].Points.AddXY(AtributosChart[i], ValoresAtributosEmp[i]);
                    }
                    //
                    this.ChartActRel.Series["Series1"].ToolTip = "#AXISLABEL : #VALY. Pinche aquí para ir a su sección";
                }

                else
                {
                    PanelChartActRel.Visible = false;
                    MuestraMensaje("No hay elementos actuales en las tablas de la Base de Conocimiento");
                }
            }
            catch (Exception e1)
            {
                e1.ToString();
                MuestraMensaje("Error al cargar el gráfico");
            }
        }

        //Método cuando se hace clic en una de las barras del gráfico
        protected void ChartActRel_Click(object sender, ImageMapEventArgs e)
        {
            String OpcionElegida = e.PostBackValue;
            switch (OpcionElegida)
            {
                case "Relaciones Amenaza - Control":
                    Response.Redirect("AdMatrAmenContr.aspx");
                    break;
                case "Relaciones Amenaza - Vulnerabilidad":
                    Response.Redirect("AdMatrAmenVuln.aspx");
                    break;
                case "Relaciones Tipo Activo - Amenaza - Criterio Riesgo":
                    Response.Redirect("AdMatrTipActAmenCritRies.aspx");
                    break;
                case "Relaciones Tipo Activo - Vulnerabilidad":
                    Response.Redirect("AdMatrTipActVuln.aspx");
                    break;
                default:
                    MuestraMensaje("Opción no recogida!");
                    break;
            }
        }

        protected void MuestraMensaje(string Mensaje)
        {
            StringBuilder SB = new StringBuilder();
            SB.Append("alert('");
            SB.Append(Mensaje.Replace("\n", "\\n").Replace("\r", "").Replace("'", "\\'"));
            SB.Append("');");
            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "showalert", SB.ToString(), true);
        }
    }
}